package com.zyx.concurrentdemo.c05memory;

/**
 * @author zyx
 * @since 2021/10/17 16:15
 * desc: balking模式案例
 */
public class Initialize {

    private boolean initialized = false;

    public void init() {
        // volatile 可以保存线程的可见性、有序性，但是不能保证原子性
        // doInit 方法没加锁，可能会被调用多次
        synchronized (this) {
            if (initialized) {
                return;
            }
            doInit();
            initialized = true;
        }
    }

    private void doInit() {

    }
    
}
